/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pedidos.Producto.Controlador;

import Pedidos.Producto.BEAN.ProductoBEAN;
import Pedidos.Producto.DAO.ProductoDAO;
import Pedidos.Producto.Vista.AgregarProducto;
import Pedidos.Producto.Vista.Producto;
import Pedidos.Producto.Vista.VerProducto;
import java.util.ArrayList;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

import sape.ControladorTabla;
import sape.MenuControlador;





/**
 *
 * @author Diego
 */
public class ProductoControlador extends ControladorTabla {
    
    Producto vista;
    MenuControlador menu_controlador=null;
    
    String[] columnas_tabla = {"Nombre","Precio Unitario"};
    Object[][] datos_tabla = null;
    ArrayList<ProductoBEAN>lista=null;
    
    
    public ProductoControlador(Producto vista, MenuControlador menuControlador){
        this.inicializarTabla();
        this.menu_controlador=menuControlador;
        this.vista=vista;
    }
    
   //METODOS DE ACCESO DE VISTA
   public void agregar(){
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
        AgregarProducto new_vista=new AgregarProducto(this.menu_controlador);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }    
   public void detalle(int row, int column) {
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
   
        int idProducto= this.lista.get(row).getId();
        VerProducto new_vista=new VerProducto(this.menu_controlador,idProducto);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }
   public void buscar(JTextField tbNombre, JTextField tbPrecio) {       
        //BUSCAR
        JOptionPane.showMessageDialog(vista,"Busqueda Realizada. " );
        lista= ProductoDAO.getListaProductos();
        this.actualizar_tabla();  
    }


    //METODOS DEL CONTROLADOR DE LA TABLA
 private void inicializarTabla() {
        lista= ProductoDAO.getListaProductos();
        this.actualizar_tabla();  
    }
 public void actualizar_tabla(){
            
            if(lista==null){
                this.datos_tabla=null;
                fireTableDataChanged();
                return;
            }
            
            Object[][] new_datos_tabla=new Object[lista.size()][columnas_tabla.length];
            
            for(int i=0;i<lista.size();i++){
               ProductoBEAN elemento=lista.get(i);
               new_datos_tabla[i][0]=elemento.getNombre();
               new_datos_tabla[i][1]=elemento.getPrecio();
            }
            this.datos_tabla=new_datos_tabla;
            fireTableDataChanged();
        }
        @Override
        public int getColumnCount() {
            if(columnas_tabla==null)return 0;
            return columnas_tabla.length;
        }
       @Override
        public int getRowCount() {
           if(datos_tabla==null)return 0;
            return datos_tabla.length;
        }
       @Override
        public String getColumnName(int col) {
           
            return columnas_tabla[col];
        }
       @Override
        public Object getValueAt(int row, int col) {
            if(datos_tabla==null)return " ";
            return datos_tabla[row][col];
        }
       @Override
        public Class getColumnClass(int c) {
           if(datos_tabla==null)return " ".getClass();
            return getValueAt(0, c).getClass();
        }
       @Override
        public void setValueAt(Object value, int row, int col) {
           
            System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            datos_tabla[row][col] = value;
            fireTableCellUpdated(row, col);
            System.out.println("New value of data:");
            printDebugData();
            
        }      
        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + datos_tabla[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }        


   
        
   

    



 
}
